% Copyright (c) 2016, David Stutz
% Contact: david.stutz@rwth-aachen.de, davidstutz.de
% All rights reserved.
% 
% Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
% 
% 1. Redistributions of source code must retain the above copyright notice,
%    this list of conditions and the following disclaimer.
% 
% 2. Redistributions in binary form must reproduce the above copyright notice,
%    this list of conditions and the following disclaimer in the
%    documentation and/or other materials provided with the distribution.
% 
% 3. Neither the name of the copyright holder nor the names of its contributors
%    may be used to endorse or promote products derived from this software
%    without specific prior written permission.
% 
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
% ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
% ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
% OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

% This script is intended to convert the SBD dataset into the used format.

% INSTRUCTIONS:
% 1. Download the Stanford Background Dataset from
%    http://dags.stanford.edu/projects/scenedataset.html
% 2. Extract the dataset such that data/SBD contains two folders:
%    images and labels.
% 3. Make sure that data/SBD contains sbd_test.txt and sbd_train.txt.
% 4. Adapt the vartiable below to match the path to data/SBD.
% 5. Run this script.

% NOTE THAT THIS SCRIPT MAY TAKE SOME TIME TO FINSIH.
% On a 8GB RAM, i5 Ubuntu 12.04 machine, it took ~40 seconds.

% SBD_DIR is the base directory containing the SBD dataset and where the
% training and testing subsets will be created. The directory should
% contain the labels subdirectory.
% SBD_LIST_TRAIN is the sbd_train.txt generated by sbd_make_subsets or
% provided in the repository.
% SBD_LIST_TEST is the sbd_test.txt generated by sbd_make_subsets or
% provided in the repository.
SBD_DIR = '/home/david/superpixels/release/data/SBD/'; % trailing "/"!
SBD_LIST_TRAIN = [SBD_DIR 'sbd_train.txt'];
SBD_LIST_TEST = [SBD_DIR 'sbd_test.txt'];

list_train = dlmread(SBD_LIST_TRAIN);
list_test = dlmread(SBD_LIST_TEST);

fprintf('Converting ground truth ... ');
tic;
sbd_delete_unnecessary([SBD_DIR 'labels']);
sbd_convert([SBD_DIR 'labels'], [SBD_DIR 'csv_groundTruth']);
%rmdir([SBD_DIR 'labels']);
elapsed = toc;
fprintf('done (%f).\n', elapsed);

fprintf('Collecting training and test sets ... ');
tic;
sbd_collect_subsets(list_train, list_test, [SBD_DIR 'images'], [SBD_DIR 'csv_groundTruth']);
elapsed = toc;
fprintf('done (%f).\n', elapsed);